diff --git a/system/libraries/Email.php b/system/libraries/Email.php
index 8c56ccc..e9a5344 100644
--- a/system/libraries/Email.php
+++ b/system/libraries/Email.php
@@ -59,7 +59,7 @@
 	var	$_atc_boundary	= "";
 	var	$_header_str	= "";
 	var	$_smtp_connect	= "";
-	var	$_encoding		= "8bit";	
+	var	$_encoding		= "8bit";
 	var $_IP			= FALSE;
 	var	$_smtp_auth		= FALSE;
 	var $_replyto_flag	= FALSE;
@@ -74,16 +74,16 @@
 	var	$_protocols		= array('mail', 'sendmail', 'smtp');
 	var	$_base_charsets	= array('us-ascii', 'iso-2022-');	// 7-bit charsets (excluding language suffix)
 	var	$_bit_depths	= array('7bit', '8bit');
-	var	$_priorities	= array('1 (Highest)', '2 (High)', '3 (Normal)', '4 (Low)', '5 (Lowest)');	
+	var	$_priorities	= array('1 (Highest)', '2 (High)', '3 (Normal)', '4 (Low)', '5 (Lowest)');
 
 
 	/**
 	 * Constructor - Sets Email Preferences
 	 *
 	 * The constructor can be passed an array of config values
-	 */	
+	 */
 	function CI_Email($config = array())
-	{
+	{	
 		if (count($config) > 0)
 		{
 			$this->initialize($config);
@@ -105,7 +105,7 @@
 	 * @access	public
 	 * @param	array
 	 * @return	void
-	 */	
+	 */
 	function initialize($config = array())
 	{
 		$this->clear();
@@ -277,7 +277,9 @@
 		$cc = $this->clean_email($cc);
 
 		if ($this->validate)
+		{
 			$this->validate_email($cc);
+		}
 
 		$this->_set_header('Cc', implode(", ", $cc));
 
@@ -630,15 +632,15 @@
 	{	
 		if	($this->mailtype == 'html' &&  count($this->_attach_name) == 0)
 		{
-				return 'html';
+			return 'html';
 		}
 		elseif	($this->mailtype == 'html' &&  count($this->_attach_name)  > 0)
 		{
-				return 'html-attach';
+			return 'html-attach';
 		}
 		elseif	($this->mailtype == 'text' &&  count($this->_attach_name)  > 0)
 		{
-				return 'plain-attach';
+			return 'plain-attach';
 		}
 		else
 		{
@@ -950,7 +952,9 @@
 		}
 
 		if ($this->_get_protocol() == 'mail')
+		{
 			$this->_header_str = substr($this->_header_str, 0, -1);
+		}
 	}
   	
 	// --------------------------------------------------------------------
@@ -1167,14 +1171,14 @@
 
 		// Reduce multiple spaces
 		$str = preg_replace("| +|", " ", $str);
-		
+
 		// kill nulls
 		$str = preg_replace('/\x00+/', '', $str);
 		
 		// Standardize newlines
 		if (strpos($str, "\r") !== FALSE)
 		{
-			$str = str_replace(array("\r\n", "\r"), "\n", $str);	
+			$str = str_replace(array("\r\n", "\r"), "\n", $str);
 		}
 
 		// We are intentionally wrapping so mail servers will encode characters
@@ -1425,18 +1429,26 @@
 		if ($this->_safe_mode == TRUE)
 		{
 			if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str))
+			{
 				return FALSE;
+			}
 			else
+			{
 				return TRUE;
+			}
 		}
 		else
 		{
 			// most documentation of sendmail using the "-f" flag lacks a space after it, however
 			// we've encountered servers that seem to require it to be in place.
 			if ( ! mail($this->_recipients, $this->_subject, $this->_finalbody, $this->_header_str, "-f ".$this->clean_email($this->_headers['From'])))
+			{
 				return FALSE;
+			}
 			else
+			{
 				return TRUE;
+			}
 		}
 	}
   	
@@ -1487,14 +1499,18 @@
 		$this->_send_command('from', $this->clean_email($this->_headers['From']));
 
 		foreach($this->_recipients as $val)
+		{
 			$this->_send_command('to', $val);
+		}
 	
 		if (count($this->_cc_array) > 0)
 		{
 			foreach($this->_cc_array as $val)
 			{
 				if ($val != "")
-				$this->_send_command('to', $val);
+				{
+					$this->_send_command('to', $val);
+				}
 			}
 		}
 
@@ -1503,7 +1519,9 @@
 			foreach($this->_bcc_array as $val)
 			{
 				if ($val != "")
-				$this->_send_command('to', $val);
+				{
+					$this->_send_command('to', $val);
+				}
 			}
 		}
 
